# Mark notification as read or unread

Updates the read/unread status of a specific notification. Only the notification owner can change its status. Requires authentication.

Endpoint: POST /api/v1/notifications/{id}/mark
Version: 1.0
Security: header

## Path parameters:

  - `id` (string, required)
    Notification ID to mark. Must be a valid NOTIFICATION type TypeId.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Query parameters:

  - `status` (string, required)
    New status for the notification: READ or UNREAD
    Enum: "UNREAD", "READ", "BLOCKED", "HIDDEN"

  - `htmlContent` (any)
    Returns text as html if true or original text if false. Applicable only to local posts and users. Default is true.

## Response 200 fields (application/json):

  - `id` (string, required)
    Internal notification id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `userId` (string, required)
    User receiving the notification
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `type` (string, required)
    FOLLOW
        New follower

        Send to the user who got a new follower.

    FOLLOW_REQUEST
        New follower request

        Similar to FOLLOW, send to the user who got a new follower,
        but in cases where followers need to be explicitly approved.

    GROUP_INVITE
        User got an invitation

        Send to the user who received the ActivityPub invitation activity.

    LIKE
        Post has been liked

        Send to the post's author as soon as another user likes their post.

    COMMENT
        Post has been commented on

        Send to the post's author and all users subscribed to the post.

    MENTION
        User has been mentioned in a post or comment

        Send to the user who was mentioned in the post or comment.

    REPOST
        Post has been reposted

        Send to the author of the post that was reposted.

    LIST_POST_CREATE
        New post or comment in list

        Send to the list owner when a new post is created by a list user.

    GROUP_CHANNEL_POST_CREATE
        New post in a subscribed group channel

        Send to users following the group channel when a new top-level post is created there.

    POST_UPDATE
        Post or comment has been updated

        Send to users subscribed to the post or comment.

    POLL
        Poll has been closed (expired)

        Send to the poll's author and all voters.

    POLL_VOTE
        Someone voted on your poll

        Send to the poll's author when another user votes.

    POST_VOTE
        Someone voted (upvote/downvote) on your post

        Send to the post's author when another user votes on their post.

    EVENT_INVITE
        User has been invited to a private event

        Send to the invitee, i.e., the user invited to the event.

    EVENT_REVOKE
        User's invitation has been revoked

        Send to the invitee, i.e., the user whose invitation was revoked.

    EVENT_JOIN
        User joined a public event

        Send to the event organizer.

    EVENT_CANCEL
        Event has been cancelled

        Send to all event attendees (for public events, to users who joined).

    EVENT_UPDATE
        Event has been updated

        Send to all event attendees (for public events, to users who joined).

    FOLLOW_FAILED
        Follow request delivery failed

        Send to the user who initiated a follow request when delivery
        to the remote server permanently fails after all retries are exhausted.
        The pending follow record is removed so the user can retry.
    Enum: "FOLLOW", "FOLLOW_REQUEST", "GROUP_INVITE", "LIKE", "COMMENT", "MENTION", "REPOST", "LIST_POST_CREATE", "GROUP_CHANNEL_POST_CREATE", "POST_UPDATE", "POLL", "POLL_VOTE", "POST_VOTE", "EVENT_INVITE", "EVENT_JOIN", "EVENT_CANCEL", "EVENT_UPDATE", "FOLLOW_FAILED"

  - `status` (string, required)
    Enum: "UNREAD", "READ", "BLOCKED", "HIDDEN"

  - `activityId` (string,null, required)
    Related activity id (usually a post)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUserId` (string,null, required)
    User who triggered the notification
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupId` (string,null)
    Related group id, if available
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `channelId` (string,null)
    Related channel(user) id, if available
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `meta` (object, required)

  - `meta.actionsAvailable` (array,null)

  - `meta.actionsAvailable.action` (string, required)

  - `meta.actionsAvailable.text` (string, required)

  - `meta.actionsTaken` (array,null)

  - `meta.actionsTaken.action` (string, required)

  - `meta.actionsTaken.text` (string, required)

  - `meta.empty` (boolean)

  - `createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `updatedAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser` (object,null)
    One of account's users.
       Can be multiple per account

  - `fromUser.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.username` (string, required)
    unique user name
    Example: "john_smith"

  - `fromUser.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `fromUser.local` (boolean, required)
    Whether this user is local to this server

  - `fromUser.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `fromUser.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `fromUser.avatar` (object,null)
    User's avatar

  - `fromUser.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `fromUser.avatar.meta` (object)
    Meta data

  - `fromUser.avatar.meta.blurhash` (string,null)

  - `fromUser.avatar.meta.name` (string,null)

  - `fromUser.avatar.meta.altText` (string,null)

  - `fromUser.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `fromUser.avatar.files` (array, required)
    List of all the files this upload has

  - `fromUser.avatar.files.uri` (string,null, required)
    Full url of the file

  - `fromUser.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `fromUser.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `fromUser.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `fromUser.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `fromUser.avatar.files.meta.width` (integer,null)
    Media width

  - `fromUser.avatar.files.meta.height` (integer,null)
    Media height

  - `fromUser.avatar.files.meta.codec` (string,null)
    Video codec

  - `fromUser.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `fromUser.avatar.files.size` (integer, required)
    File size in bytes

  - `fromUser.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `fromUser.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `fromUser.avatar.error` (string,null)
    Upload processing error

  - `fromUser.avatar.cached` (boolean)
    true if cached

  - `fromUser.avatar.logs` (string,null)
    Logs

  - `fromUser.avatar.remote` (boolean)
    true if this upload is remote

  - `fromUser.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `fromUser.relationship` (object,null)
    Relationship with this user

  - `fromUser.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `fromUser.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `fromUser.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `fromUser.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `fromUser.relationship.muted` (object,null)
    Viewer mutes the target

  - `fromUser.relationship.muted.state` (boolean, required)

  - `fromUser.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.relationship.note` (string,null)
    Viewer's private note about the target

  - `fromUser.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `fromUser.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `fromUser.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `fromUser.groupUserName` (string,null)
    Name of the channel inside a group

  - `fromUser.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `fromUser.deleted` (boolean,null)

  - `fromUser.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `fromUser.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `fromUser.groupAvatar.meta` (object)
    Meta data

  - `fromUser.groupAvatar.meta.blurhash` (string,null)

  - `fromUser.groupAvatar.meta.name` (string,null)

  - `fromUser.groupAvatar.meta.altText` (string,null)

  - `fromUser.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `fromUser.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `fromUser.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `fromUser.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `fromUser.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `fromUser.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `fromUser.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `fromUser.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `fromUser.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `fromUser.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `fromUser.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `fromUser.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `fromUser.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `fromUser.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `fromUser.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `fromUser.groupAvatar.error` (string,null)
    Upload processing error

  - `fromUser.groupAvatar.cached` (boolean)
    true if cached

  - `fromUser.groupAvatar.logs` (string,null)
    Logs

  - `fromUser.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `fromUser.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `fromUser.groupName` (string,null)
    Group name (only present for group channels)

  - `fromUser.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `fromUser.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `fromUser.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `fromUser.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `fromUser.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `post` (object,null)
    User's post

  - `post.id` (string, required)
    internal post id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uri` (string, required)
    unique post uri

  - `post.text` (string, required)
    post text, raw or html depending on how it was requested

  - `post.path` (array, required)
    replies path
    Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"]

  - `post.privacy` (string, required)
    post privacy level
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.effectivePrivacy` (string, required)
    Resolved privacy that never contains FOLLOW_POST. For FOLLOW_POST posts, this is the root post's privacy. For all other posts, this equals privacy.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.kind` (string, required)
    Article or Note
    Enum: "Note", "Article"

  - `post.software` (string, required)
    post software
    Example: "wellesley"

  - `post.repostOf` (string,null)
    id of a post this one was reposted from
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.ownerId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.ownerType` (string, required)
    Owner types for posts and drafts:
      * USER - user's channel (personal or group channel)
      * EVENT - event (personal or group)

       POST OWNER: 
      - Personal channel
          - userId = author
          - ownerId = userId (Type.USER)
          - ownerType = USER
          - groupId = null
      - Personal event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = null
      - Group channel
          - userId = author
          - ownerId = channel userId (Type.GROUP_CHANNEL, gc_ prefix)
          - ownerType = USER
          - groupId = groupId
      - Group event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = groupId
    Enum: "USER", "EVENT"

  - `post.groupId` (string,null, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.title` (string,null, required)

  - `post.summary` (string,null)
    Subject or summary line, below which post content is collapsed until expanded.

  - `post.tags` (array, required)
    List of tags

  - `post.mentions` (array, required)
    List of mentions

  - `post.stats` (object, required)
    Stats

  - `post.stats.likes` (integer)

  - `post.stats.reposts` (integer)

  - `post.stats.quotes` (integer)

  - `post.stats.comments` (integer)

  - `post.stats.views` (integer)

  - `post.stats.bookmarks` (integer)

  - `post.stats.reactions` (object)

  - `post.stats.watchTime` (integer,null)

  - `post.stats.secondsToFirstAnswer` (integer,null)

  - `post.stats.secondsToAccepted` (integer,null)

  - `post.stats.lastActivity` (string)
    Example: "2022-03-10T16:15:50Z"

  - `post.stats.lastViewTimestamp` (string)
    Example: "2022-03-10T16:15:50Z"

  - `post.settings` (object, required)
    Settings

  - `post.settings.commentsEnabled` (boolean)

  - `post.settings.sensitive` (boolean)

  - `post.settings.hiddenFrom` (string,null)
    Privacy levels for posts:
      * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user.
                 It appears in the public timelines (home, local, and federated).
      * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines.
                 Only followers and those who visit the user's profile directly can see it.
      * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
      * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
      * FOLLOW_POST - comment only. Follow parent post visibility
      * HIDDEN - post is visible only to the author. It is never federated on create/delete. Transitioning to a visible privacy sends
      *            Create for born-hidden posts and Update for re-unhide. Visible-to-HIDDEN is allowed only for personal root posts.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.lang` (string,null, required)
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

  - `post.poll` (object,null, required)

  - `post.poll.id` (string, required)
    Internal poll id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.poll.startedAt` (string, required)
    Time when poll starts. Poll is valid from startedAt until expiresAt.
    Example: "2022-03-10T16:15:50Z"

  - `post.poll.expiresAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.poll.multiple` (boolean, required)

  - `post.poll.votersCount` (integer, required)

  - `post.poll.options` (array, required)

  - `post.poll.options.title` (string, required)

  - `post.poll.options.votesCount` (integer, required)

  - `post.poll.hideTotals` (boolean, required)

  - `post.poll.ownVotes` (array,null)

  - `post.poll.emojis` (array,null)

  - `post.poll.emojis.shortcode` (string, required)

  - `post.poll.emojis.category` (string,null, required)

  - `post.poll.emojis.url` (string, required)

  - `post.poll.emojis.staticUrl` (string, required)

  - `post.poll.emojis.visibleInPicker` (boolean, required)

  - `post.card` (object,null, required)
    Preview card for any links in the post

  - `post.card.url` (string,null, required)
    URL being referenced

  - `post.card.title` (string,null, required)
    Title of the linked resource

  - `post.card.description` (string,null, required)
    Description of the linked resource

  - `post.card.icon` (string,null, required)
    Favicon URL

  - `post.card.image` (string,null, required)
    Preview image URL

  - `post.card.imageAlt` (string,null, required)
    Alt text for the preview image

  - `post.card.publisher` (object,null, required)
    Information about the website/provider

  - `post.card.publisher.name` (string,null, required)

  - `post.card.publisher.url` (string,null, required)

  - `post.card.publisher.logo` (string,null)

  - `post.card.publisher.type` (string,null)

  - `post.card.oembedHtml` (string,null)
    HTML snippet to embed the link (from oEmbed), e.g., an iframe

  - `post.card.createdAt` (string, required)
    When the card data was fetched/created
    Example: "2022-03-10T16:15:50Z"

  - `post.card.expiresAt` (string,null, required)
    When the card data should be considered stale
    Example: "2022-03-10T16:15:50Z"

  - `post.mediaType` (string, required)
    Post media type. Default for Note is text/plain, for Article text/markdown
    Enum: "TEXT_PLAIN", "MARKDOWN"

  - `post.translations` (object,null, required)

  - `post.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author` (object, required)
    One of account's users.
       Can be multiple per account

  - `post.author.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.username` (string, required)
    unique user name
    Example: "john_smith"

  - `post.author.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `post.author.local` (boolean, required)
    Whether this user is local to this server

  - `post.author.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `post.author.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `post.author.avatar` (object,null)
    User's avatar

  - `post.author.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.avatar.meta` (object)
    Meta data

  - `post.author.avatar.meta.blurhash` (string,null)

  - `post.author.avatar.meta.name` (string,null)

  - `post.author.avatar.meta.altText` (string,null)

  - `post.author.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.author.avatar.files` (array, required)
    List of all the files this upload has

  - `post.author.avatar.files.uri` (string,null, required)
    Full url of the file

  - `post.author.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.author.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.author.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.author.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.author.avatar.files.meta.width` (integer,null)
    Media width

  - `post.author.avatar.files.meta.height` (integer,null)
    Media height

  - `post.author.avatar.files.meta.codec` (string,null)
    Video codec

  - `post.author.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.author.avatar.files.size` (integer, required)
    File size in bytes

  - `post.author.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.author.avatar.error` (string,null)
    Upload processing error

  - `post.author.avatar.cached` (boolean)
    true if cached

  - `post.author.avatar.logs` (string,null)
    Logs

  - `post.author.avatar.remote` (boolean)
    true if this upload is remote

  - `post.author.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `post.author.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `post.author.relationship` (object,null)
    Relationship with this user

  - `post.author.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `post.author.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `post.author.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `post.author.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `post.author.relationship.muted` (object,null)
    Viewer mutes the target

  - `post.author.relationship.muted.state` (boolean, required)

  - `post.author.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.relationship.note` (string,null)
    Viewer's private note about the target

  - `post.author.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `post.author.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `post.author.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `post.author.groupUserName` (string,null)
    Name of the channel inside a group

  - `post.author.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `post.author.deleted` (boolean,null)

  - `post.author.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `post.author.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.groupAvatar.meta` (object)
    Meta data

  - `post.author.groupAvatar.meta.blurhash` (string,null)

  - `post.author.groupAvatar.meta.name` (string,null)

  - `post.author.groupAvatar.meta.altText` (string,null)

  - `post.author.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.author.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `post.author.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `post.author.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.author.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.author.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.author.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.author.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `post.author.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `post.author.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `post.author.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.author.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `post.author.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.author.groupAvatar.error` (string,null)
    Upload processing error

  - `post.author.groupAvatar.cached` (boolean)
    true if cached

  - `post.author.groupAvatar.logs` (string,null)
    Logs

  - `post.author.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `post.author.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupName` (string,null)
    Group name (only present for group channels)

  - `post.author.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `post.author.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `post.author.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `post.author.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `post.author.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `post.uploads` (array, required)

  - `post.uploads.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.uploads.meta` (object)
    Meta data

  - `post.uploads.meta.blurhash` (string,null)

  - `post.uploads.meta.name` (string,null)

  - `post.uploads.meta.altText` (string,null)

  - `post.uploads.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.uploads.files` (array, required)
    List of all the files this upload has

  - `post.uploads.files.uri` (string,null, required)
    Full url of the file

  - `post.uploads.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.uploads.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.uploads.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.uploads.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.uploads.files.meta.width` (integer,null)
    Media width

  - `post.uploads.files.meta.height` (integer,null)
    Media height

  - `post.uploads.files.meta.codec` (string,null)
    Video codec

  - `post.uploads.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.uploads.files.size` (integer, required)
    File size in bytes

  - `post.uploads.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.uploads.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.uploads.error` (string,null)
    Upload processing error

  - `post.uploads.cached` (boolean)
    true if cached

  - `post.uploads.logs` (string,null)
    Logs

  - `post.uploads.remote` (boolean)
    true if this upload is remote

  - `post.uploads.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.liked` (boolean,null)
    Whether the current user liked it or not

  - `post.reposted` (boolean,null)
    Whether the current user reposted it or not

  - `post.quoted` (boolean,null)
    Whether the current user quoted it or not

  - `post.muted` (boolean,null)
    Whether the current user muted the author of the post

  - `post.blocked` (boolean,null)
    Whether the current user blocked the author of the post

  - `post.visible` (boolean,null)
    Whether the current user can see it or not (e.g. FOLLOWERS_ONLY

  - `post.pinned` (boolean,null)
    Whether the current user pinned it or not

  - `post.pinnedAt` (string,null)
    Timestamp when the post was pinned/highlighted (from post_pins)
    Example: "2022-03-10T16:15:50Z"

  - `post.bookmarked` (boolean,null)
    Whether the current user bookmarked it or not

  - `post.subscribed` (boolean,null)
    Whether the current user is subscribed to post updates

  - `post.canManage` (boolean,null)
    Whether the current user can edit/delete this post

  - `post.edited` (boolean,null)
    Whether the post was edited

  - `post.deleted` (boolean,null, required)

  - `post.emojis` (array,null)

  - `post.emojis.shortcode` (string, required)

  - `post.emojis.category` (string,null, required)

  - `post.emojis.url` (string, required)

  - `post.emojis.staticUrl` (string, required)

  - `post.emojis.visibleInPicker` (boolean, required)

  - `post.replies` (array,null)

  - `post.repostedBy` (array,null)
    List of users who reposted this post

  - `post.repostedBy.id` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.repostedBy.displayName` (string, required)

  - `post.repostedBy.username` (string, required)

  - `post.repostedBy.domain` (string, required)

  - `post.originalPost` (object,null)
    Original post of repost/quote (the post being reposted or quoted). Related to repostOf field.

  - `post.parent` (object,null)
    Parent post for comments/replies. Related to replyTo (last element in path).

  - `post.votes` (object,null)
    Votes summary

  - `post.votes.upvotes` (integer, required)
    upvotes count

  - `post.votes.downvotes` (integer, required)
    downvotes count

  - `post.votes.ownVote` (integer,null)
    current user's vote, if any

  - `post.publisher` (object,null)
    Publisher context for mixed-scope lists (e.g. search). Contains channel or group branding.

  - `post.publisher.id` (string, required)
    Publisher id (user id for channels, group id for groups)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.type` (string, required)
    Publisher type (USER or GROUP)
    Enum: "USER", "ACCOUNT", "PLATFORM_APP", "APPLICATION", "BOT", "GROUP_CHANNEL", "APP_DATA", "POST", "POLL", "TAG", "TAG_REPORT", "USER_LIST", "NOTIFICATION", "REPORT", "REPORT_COMMENT", "RULE", "QUESTION", "ANSWER", "GROUP", "DRAFT", "UPLOAD", "FILE", "UPLOAD_ACTION", "UPLOAD_JOB", "EXECUTION", "EMPLOYEE_PROFILE", "EMPLOYER_PROFILE", "JOB_POSTING", "JOB_APPLICATION", "MEMBER_LIST", "RBAC_ROLE", "JOIN_REQUEST", "GROUP_INVITE", "EVENT", "AI_PROVIDER", "AI_MODEL", "AI_JOB", "AI_SIGNAL", "AI_SCOPED_PROVIDER", "AI_SCOPED_MODEL", "EMBEDDING_RECALC", "ASYNC_REFRESH", "QUOTE_AUTH", "EMPTY"

  - `post.publisher.username` (string, required)
    Publisher username (channel username or group name)

  - `post.publisher.displayName` (string, required)
    Publisher display name

  - `post.publisher.domain` (string, required)
    Publisher domain

  - `post.publisher.avatar` (object,null)
    Publisher avatar (channel avatar or group avatar)

  - `post.publisher.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.avatar.meta` (object)
    Meta data

  - `post.publisher.avatar.meta.blurhash` (string,null)

  - `post.publisher.avatar.meta.name` (string,null)

  - `post.publisher.avatar.meta.altText` (string,null)

  - `post.publisher.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.publisher.avatar.files` (array, required)
    List of all the files this upload has

  - `post.publisher.avatar.files.uri` (string,null, required)
    Full url of the file

  - `post.publisher.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.publisher.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.publisher.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.publisher.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.publisher.avatar.files.meta.width` (integer,null)
    Media width

  - `post.publisher.avatar.files.meta.height` (integer,null)
    Media height

  - `post.publisher.avatar.files.meta.codec` (string,null)
    Video codec

  - `post.publisher.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.publisher.avatar.files.size` (integer, required)
    File size in bytes

  - `post.publisher.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.publisher.avatar.error` (string,null)
    Upload processing error

  - `post.publisher.avatar.cached` (boolean)
    true if cached

  - `post.publisher.avatar.logs` (string,null)
    Logs

  - `post.publisher.avatar.remote` (boolean)
    true if this upload is remote

  - `post.publisher.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `post.publisher.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.groupAvatar.meta` (object)
    Meta data

  - `post.publisher.groupAvatar.meta.blurhash` (string,null)

  - `post.publisher.groupAvatar.meta.name` (string,null)

  - `post.publisher.groupAvatar.meta.altText` (string,null)

  - `post.publisher.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.publisher.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `post.publisher.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `post.publisher.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.publisher.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.publisher.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.publisher.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.publisher.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `post.publisher.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `post.publisher.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `post.publisher.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.publisher.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `post.publisher.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.publisher.groupAvatar.error` (string,null)
    Upload processing error

  - `post.publisher.groupAvatar.cached` (boolean)
    true if cached

  - `post.publisher.groupAvatar.logs` (string,null)
    Logs

  - `post.publisher.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `post.publisher.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupId` (string,null)
    Group id (only present for group channels)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupName` (string,null)
    Group name (only present for group channels)

  - `post.publisher.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `post.publisher.groupPrivacy` (string,null)
    Channel privacy within a group (PUBLIC or PRIVATE)
    Enum: "PUBLIC", "PRIVATE"

  - `post.publisher.groupUserName` (string,null)
    Channel username within a group (only present for group channels)

  - `post.isHighlightCopy` (boolean,null)
    Whether this is a copy of a highlighted (pinned) reply
                (used to surface deep (2nd+ lvl) highlights under the root post).

  - `post.quoteApproval` (object,null)
    Quote approval policy info, including viewer's approval status

  - `post.quoteApproval.policy` (string, required)
    Effective quote policy for this post
    Enum: "PUBLIC", "FOLLOWERS", "NOBODY"

  - `post.quoteApproval.automatic` (array, required)
    Categories that get automatic approval (e.g. 'public', 'followers')

  - `post.quoteApproval.manual` (array, required)
    Categories that require manual approval

  - `post.quoteApproval.currentUser` (string,null)
    Current user's approval status: 'automatic', 'manual', or null

  - `post.address` (object,null)
    Post location

  - `post.address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `post.address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `post.address.country` (string,null)
    Country
    Example: "USA"

  - `post.address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `post.address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `post.address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `post.address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `post.address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `post.address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `post.address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `post.address.houseNumber` (string,null)
    House number
    Example: "23"

  - `post.address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `post.address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `post.address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `post.address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `post.address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `post.address.placeId` (string,null)
    Service place id

  - `post.replyTo` (string,null)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.conversationId` (string)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event` (object,null)
    User's Event

  - `event.id` (string, required)
    Internal event id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.uri` (string, required)
    Unique event uri

  - `event.groupId` (string,null)
    Group id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.name` (string, required)
    Event's name

  - `event.startTime` (string, required)
    Event's start time
    Example: "2022-03-10T16:15:50Z"

  - `event.endTime` (string,null)
    Event's end time
    Example: "2022-03-10T16:15:50Z"

  - `event.ianaTimeZone` (string,null)
    Event's IANA time zone

  - `event.timeZoneOffsetSeconds` (integer, required)
    Event's time zone offset (in seconds)

  - `event.description` (string,null)
    Event's Markdown description (absent for non-local events)

  - `event.descriptionHtml` (string,null)
    Event's HTML description

  - `event.url` (string,null)
    Event's virtual location URL

  - `event.addressId` (integer,null)
    Event's address id

  - `event.tags` (array,null)
    Event's tags

  - `event.mentions` (array,null)
    Event's mentions

  - `event.stats` (object, required)
    Stats

  - `event.stats.interests` (integer, required)

  - `event.stats.joins` (integer, required)

  - `event.status` (string, required)
    Event status
    Enum: "CONFIRMED", "CANCELLED"

  - `event.attendeeStatus` (string,null)
    Viewer user's event attendance status
    Enum: "INVITED", "JOINED", "JOINED_TENTATIVELY", "REJECTED"

  - `event.commentCount` (integer,null)
    Event comment count

  - `event.privacy` (string, required)
    Privacy levels for posts:
      * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user.
                 It appears in the public timelines (home, local, and federated).
      * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines.
                 Only followers and those who visit the user's profile directly can see it.
      * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
      * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
      * FOLLOW_POST - comment only. Follow parent post visibility
      * HIDDEN - post is visible only to the author. It is never federated on create/delete. Transitioning to a visible privacy sends
      *            Create for born-hidden posts and Update for re-unhide. Visible-to-HIDDEN is allowed only for personal root posts.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `event.translation` (object,null, required)
    Event translation

  - `event.translation.name` (string, required)

  - `event.translation.descriptionHtml` (string,null, required)

  - `event.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.deletedAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.lang` (string,null, required)
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

  - `event.organizer` (object, required)
    One of account's users.
       Can be multiple per account

  - `event.organizer.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.username` (string, required)
    unique user name
    Example: "john_smith"

  - `event.organizer.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `event.organizer.local` (boolean, required)
    Whether this user is local to this server

  - `event.organizer.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `event.organizer.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `event.organizer.avatar` (object,null)
    User's avatar

  - `event.organizer.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.organizer.avatar.meta` (object)
    Meta data

  - `event.organizer.avatar.meta.blurhash` (string,null)

  - `event.organizer.avatar.meta.name` (string,null)

  - `event.organizer.avatar.meta.altText` (string,null)

  - `event.organizer.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `event.organizer.avatar.files` (array, required)
    List of all the files this upload has

  - `event.organizer.avatar.files.uri` (string,null, required)
    Full url of the file

  - `event.organizer.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `event.organizer.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `event.organizer.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `event.organizer.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `event.organizer.avatar.files.meta.width` (integer,null)
    Media width

  - `event.organizer.avatar.files.meta.height` (integer,null)
    Media height

  - `event.organizer.avatar.files.meta.codec` (string,null)
    Video codec

  - `event.organizer.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `event.organizer.avatar.files.size` (integer, required)
    File size in bytes

  - `event.organizer.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.organizer.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `event.organizer.avatar.error` (string,null)
    Upload processing error

  - `event.organizer.avatar.cached` (boolean)
    true if cached

  - `event.organizer.avatar.logs` (string,null)
    Logs

  - `event.organizer.avatar.remote` (boolean)
    true if this upload is remote

  - `event.organizer.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `event.organizer.relationship` (object,null)
    Relationship with this user

  - `event.organizer.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `event.organizer.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `event.organizer.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `event.organizer.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `event.organizer.relationship.muted` (object,null)
    Viewer mutes the target

  - `event.organizer.relationship.muted.state` (boolean, required)

  - `event.organizer.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.relationship.note` (string,null)
    Viewer's private note about the target

  - `event.organizer.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `event.organizer.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `event.organizer.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `event.organizer.groupUserName` (string,null)
    Name of the channel inside a group

  - `event.organizer.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `event.organizer.deleted` (boolean,null)

  - `event.organizer.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `event.organizer.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.organizer.groupAvatar.meta` (object)
    Meta data

  - `event.organizer.groupAvatar.meta.blurhash` (string,null)

  - `event.organizer.groupAvatar.meta.name` (string,null)

  - `event.organizer.groupAvatar.meta.altText` (string,null)

  - `event.organizer.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `event.organizer.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `event.organizer.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `event.organizer.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.organizer.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `event.organizer.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `event.organizer.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `event.organizer.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `event.organizer.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `event.organizer.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `event.organizer.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `event.organizer.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `event.organizer.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `event.organizer.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.organizer.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `event.organizer.groupAvatar.error` (string,null)
    Upload processing error

  - `event.organizer.groupAvatar.cached` (boolean)
    true if cached

  - `event.organizer.groupAvatar.logs` (string,null)
    Logs

  - `event.organizer.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `event.organizer.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.organizer.groupName` (string,null)
    Group name (only present for group channels)

  - `event.organizer.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `event.organizer.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `event.organizer.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `event.organizer.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `event.organizer.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `event.cover` (object,null, required)
    Uploaded file

  - `event.cover.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.cover.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.cover.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.cover.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.cover.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.cover.meta` (object)
    Meta data

  - `event.cover.meta.blurhash` (string,null)

  - `event.cover.meta.name` (string,null)

  - `event.cover.meta.altText` (string,null)

  - `event.cover.size` (integer, required)
    Size in bytes of all the files in this upload

  - `event.cover.files` (array, required)
    List of all the files this upload has

  - `event.cover.files.uri` (string,null, required)
    Full url of the file

  - `event.cover.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `event.cover.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `event.cover.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `event.cover.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `event.cover.files.meta.duration` (number,null)
    Video duration in seconds

  - `event.cover.files.meta.width` (integer,null)
    Media width

  - `event.cover.files.meta.height` (integer,null)
    Media height

  - `event.cover.files.meta.codec` (string,null)
    Video codec

  - `event.cover.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `event.cover.files.size` (integer, required)
    File size in bytes

  - `event.cover.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.cover.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.cover.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `event.cover.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `event.cover.error` (string,null)
    Upload processing error

  - `event.cover.cached` (boolean)
    true if cached

  - `event.cover.logs` (string,null)
    Logs

  - `event.cover.remote` (boolean)
    true if this upload is remote

  - `event.cover.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.cover.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `event.address` (object,null, required)
    Address variant

  - `event.address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `event.address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `event.address.country` (string,null)
    Country
    Example: "USA"

  - `event.address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `event.address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `event.address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `event.address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `event.address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `event.address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `event.address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `event.address.houseNumber` (string,null)
    House number
    Example: "23"

  - `event.address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `event.address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `event.address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `event.address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `event.address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `event.address.placeId` (string,null)
    Service place id

  - `event.emojis` (array,null)

  - `event.emojis.shortcode` (string, required)

  - `event.emojis.category` (string,null, required)

  - `event.emojis.url` (string, required)

  - `event.emojis.staticUrl` (string, required)

  - `event.emojis.visibleInPicker` (boolean, required)

  - `groupInvite` (object,null)
    A group invitation with full details about the inviter, invitee, and group

  - `groupInvite.groupInviteId` (string, required)
    Unique identifier for this invitation
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupId` (string, required)
    ID of the group
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterId` (string, required)
    ID of the user who sent the invitation
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeId` (string,null)
    ID of the user being invited (null for email-only invites)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.status` (string, required)
    Current status of the invitation
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `groupInvite.message` (string,null)
    Optional message from the inviter

  - `groupInvite.email` (string,null)
    Email address of the invitee (present for email-based invites)

  - `groupInvite.inviterName` (string, required)
    Username of the inviter

  - `groupInvite.inviterDisplayName` (string, required)
    Display name of the inviter

  - `groupInvite.inviterAvatar` (object,null)
    Avatar of the inviter

  - `groupInvite.inviterAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.inviterAvatar.meta` (object)
    Meta data

  - `groupInvite.inviterAvatar.meta.blurhash` (string,null)

  - `groupInvite.inviterAvatar.meta.name` (string,null)

  - `groupInvite.inviterAvatar.meta.altText` (string,null)

  - `groupInvite.inviterAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `groupInvite.inviterAvatar.files` (array, required)
    List of all the files this upload has

  - `groupInvite.inviterAvatar.files.uri` (string,null, required)
    Full url of the file

  - `groupInvite.inviterAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviterAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `groupInvite.inviterAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `groupInvite.inviterAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `groupInvite.inviterAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `groupInvite.inviterAvatar.files.meta.width` (integer,null)
    Media width

  - `groupInvite.inviterAvatar.files.meta.height` (integer,null)
    Media height

  - `groupInvite.inviterAvatar.files.meta.codec` (string,null)
    Video codec

  - `groupInvite.inviterAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `groupInvite.inviterAvatar.files.size` (integer, required)
    File size in bytes

  - `groupInvite.inviterAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviterAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviterAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.inviterAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `groupInvite.inviterAvatar.error` (string,null)
    Upload processing error

  - `groupInvite.inviterAvatar.cached` (boolean)
    true if cached

  - `groupInvite.inviterAvatar.logs` (string,null)
    Logs

  - `groupInvite.inviterAvatar.remote` (boolean)
    true if this upload is remote

  - `groupInvite.inviterAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviterAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviteeName` (string,null)
    Username of the invitee (null for unclaimed email-only invites)

  - `groupInvite.inviteeDisplayName` (string,null)
    Display name of the invitee (null for unclaimed email-only invites)

  - `groupInvite.inviteeAvatar` (object,null)
    Avatar of the invitee

  - `groupInvite.inviteeAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.inviteeAvatar.meta` (object)
    Meta data

  - `groupInvite.inviteeAvatar.meta.blurhash` (string,null)

  - `groupInvite.inviteeAvatar.meta.name` (string,null)

  - `groupInvite.inviteeAvatar.meta.altText` (string,null)

  - `groupInvite.inviteeAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `groupInvite.inviteeAvatar.files` (array, required)
    List of all the files this upload has

  - `groupInvite.inviteeAvatar.files.uri` (string,null, required)
    Full url of the file

  - `groupInvite.inviteeAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.inviteeAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `groupInvite.inviteeAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `groupInvite.inviteeAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `groupInvite.inviteeAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `groupInvite.inviteeAvatar.files.meta.width` (integer,null)
    Media width

  - `groupInvite.inviteeAvatar.files.meta.height` (integer,null)
    Media height

  - `groupInvite.inviteeAvatar.files.meta.codec` (string,null)
    Video codec

  - `groupInvite.inviteeAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `groupInvite.inviteeAvatar.files.size` (integer, required)
    File size in bytes

  - `groupInvite.inviteeAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviteeAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviteeAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.inviteeAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `groupInvite.inviteeAvatar.error` (string,null)
    Upload processing error

  - `groupInvite.inviteeAvatar.cached` (boolean)
    true if cached

  - `groupInvite.inviteeAvatar.logs` (string,null)
    Logs

  - `groupInvite.inviteeAvatar.remote` (boolean)
    true if this upload is remote

  - `groupInvite.inviteeAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.inviteeAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.groupName` (string, required)
    Name of the group

  - `groupInvite.groupDisplayName` (string, required)
    Display name of the group

  - `groupInvite.groupAvatar` (object,null)
    Avatar of the group

  - `groupInvite.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.groupAvatar.meta` (object)
    Meta data

  - `groupInvite.groupAvatar.meta.blurhash` (string,null)

  - `groupInvite.groupAvatar.meta.name` (string,null)

  - `groupInvite.groupAvatar.meta.altText` (string,null)

  - `groupInvite.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `groupInvite.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `groupInvite.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `groupInvite.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupInvite.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `groupInvite.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `groupInvite.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `groupInvite.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `groupInvite.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `groupInvite.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `groupInvite.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `groupInvite.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `groupInvite.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `groupInvite.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `groupInvite.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `groupInvite.groupAvatar.error` (string,null)
    Upload processing error

  - `groupInvite.groupAvatar.cached` (boolean)
    true if cached

  - `groupInvite.groupAvatar.logs` (string,null)
    Logs

  - `groupInvite.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `groupInvite.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.createdAt` (string, required)
    When the invitation was created
    Example: "2022-03-10T16:15:50Z"

  - `groupInvite.updatedAt` (string, required)
    When the invitation was last updated
    Example: "2022-03-10T16:15:50Z"

  - `context` (object,null)
    Optional group/channel context for notification rendering

  - `context.groupId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupName` (string, required)

  - `context.groupDisplayName` (string, required)

  - `context.groupAvatar` (object,null)
    Uploaded file

  - `context.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `context.groupAvatar.meta` (object)
    Meta data

  - `context.groupAvatar.meta.blurhash` (string,null)

  - `context.groupAvatar.meta.name` (string,null)

  - `context.groupAvatar.meta.altText` (string,null)

  - `context.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `context.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `context.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `context.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `context.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `context.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `context.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `context.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `context.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `context.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `context.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `context.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `context.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `context.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `context.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `context.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `context.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `context.groupAvatar.error` (string,null)
    Upload processing error

  - `context.groupAvatar.cached` (boolean)
    true if cached

  - `context.groupAvatar.logs` (string,null)
    Logs

  - `context.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `context.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `context.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `context.channelName` (string,null)

  - `context.channelDisplayName` (string,null)

## Response 401 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


